/*
Ethereal Farm
Copyright (C) 2020  Lode Vandevenne

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.
*/





var seeds_berry0 = `
................
................
................
................
................
................
................
...o........o...
........o.......
................
.....o.....o....
................
....o....o......
................
................
................
`;

var seeds_berry1 = `
................
................
................
................
................
....|...........
................
.......|...|....
................
..|.............
.........|......
.....|..........
................
..|..........|..
................
................
`;

var seeds_flower0 = `
................
................
................
................
................
................
................
........N.......
..N........N....
....N.........N.
................
........N.......
N...........N...
....N...........
.........N......
................
`;

var seeds_flower1 = `
................
................
................
................
................
................
................
............J...
.....J..........
................
....J...J.......
.J..........J...
.....J..........
.........J......
................
................
`;

var seeds_mushroom0 = `
................
................
................
................
................
................
....0...........
.........0......
................
....0.....0.....
................
..0....0..0.....
.............0..
......0.........
................
................
`;


var seeds_mushroom1 = `
................
................
................
................
................
................
..............p.
................
........p.......
.p.........p....
....p...........
........p...p...
...p............
................
.......p........
................
`;


var seeds_nettle = `
................
................
................
................
................
................
................
................
.....g.....g....
.......g........
....g...........
..........g.....
.....g.g........
..........g.....
................
................
`;

// Creates 5 image stages for plants, given the following images:
// *) seeds: first growing stage plant where it just forms some seeds on the ground,
// feel free to reuse seed images for multiple plants
// shown for first 25% of plant growing time
// *) sprout: first growth state unique to this plant, small sprout
// shown for 25-50% of plant growing time
// *) growing: already bigger than sprout but not fullgrown yet
// shown for 50-75% of plant growing time
// *) grown: fullgrown leaves/step/..., but no crop yet, so not ready yet
// shown for 75-100% of plant growing time
// *) ripe: ripe crop image for this plant, without stem/leaves/...: this will
// be alpha-blended on top of the 'grown' image
// ---
// Then returns those images as 5-element array
function createPlantImages(seeds, sprout, growing, grown, ripe) {
  var a = generateImageCanvas(seeds);
  var b = generateImageCanvas(sprout);
  var c = generateImageCanvas(growing);
  var d = generateImageCanvas(grown);
  var e = createCanvasImageFor(blendImages(generateImage(grown), generateImage((ripe))));
  return [a, b, c, d, e];
}

// similar but wihtout the blending, so need 5 unique images
function createPlantImages2(seeds, sprout, growing, grown, ripe) {
  var a = generateImageCanvas(seeds);
  var b = generateImageCanvas(sprout);
  var c = generateImageCanvas(growing);
  var d = generateImageCanvas(grown);
  var e = generateImageCanvas(ripe);
  return [a, b, c, d, e];
}



// generic image for when none given
var missingplant = createPlantImages(seeds_berry0,
// sprout
`
................
................
................
................
................
................
................
................
................
......ox........
......ox........
......ox........
................
................
................
................
`, // growing
`
................
................
................
........ox......
........ox......
........ox......
........ox......
.......oxx......
......oxx.......
......ox........
......ox........
......ox........
................
................
................
................
`, // grown
`
...........qq...
..........qgg...
.....oxxx.gg....
....oxxoxx......
...oxx..ox......
...ox...ox......
........ox......
.......oxx......
......oxx.......
......ox........
......ox........
......ox........
................
................
................
................
`, // ripe
fruitimageheader + `
................
................
................
................
................
................
..PP............
.PRRR...........
.PRRr...........
..Rr............
................
................
................
................
................
................
`);



var blackberry = createPlantImages(seeds_berry0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
.............||.
............|tt.
........||t.tt..
........|tut....
...........u....
...........u....
...........u....
............u...
................
................
`, // growing
subtleplantimageheader + `
................
................
.....tt..tt.....
.....t|.tt|.....
.....t|.t|......
......uu........
...ttt..u.......
...t||...u......
..........u.....
..........u.....
...........u....
...........u....
...........u....
............u...
................
................
`, // grown
subtleplantimageheader + `
................
................
.|||||..........
.tt||||..|||....
..tttt|.||||||..
......uttttttt..
....||..utttt...
....||t..u......
...||tt...u.....
...||tt...u.....
...|tt.....u....
....tt.....u....
...........u....
............u...
................
................
`, // ripe
fruitimageheader + `
................
................
................
................
...0i...........
...i0....i0.....
......0i.0i.....
......i0....i0..
............0i..
.....i0.........
.....0i.i0......
..i0....0i......
..0i............
................
................
................
`);



var blueberry = createPlantImages(seeds_berry1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
.....HH.H.......
......h.Hh......
.......x........
.......x........
.......x........
.......x........
.......x........
................
`, // growing
subtleplantimageheader + `
................
....H...........
...HHH.....HH...
....Hh....HHh...
.....h...xHh....
.....x...x......
.....x...x......
......x..x......
......x.x.......
......x.x.......
.......x........
.......x........
.......x........
.......x........
.......x........
................
`, // grown
subtleplantimageheader + `
................
................
..HH............
..HHHh.HH.......
...hhhHHhx......
.....xHh.xHHH...
.....xhh.HHHhh..
....HHx..xhhh...
...HHhx.x.......
..HHhhx.x.......
...hh..xHHH.....
.......xhhhh....
.......x.hh.....
.......x........
.......x........
................
`, // ripe
fruitimageheader + `
................
......AA........
......Aa..Aa....
..........AA....
................
.AA.............
.aA.............
................
.........Aa..AA.
.........AA..aA.
.....AA.........
.AA..aA.........
.Aa.........aA..
............AA..
................
................
`);



var cranberry = createPlantImages(seeds_berry0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
.........G......
........oo......
.....G..o.G.....
......o.oo......
......oOo.......
.......Oo.......
.......Oo.......
................
`, // growing
subtleplantimageheader + `
................
................
........o..to...
.......to...o...
........ot.oo...
....o...o..o....
...t.o..o.oot...
.....o..o.o.....
.....o..o.o.....
......o.oo.t....
.....to.o.......
......o.oot.....
......oOo.......
.......Oo.......
.......Oo.......
................
`, // grown
subtleplantimageheader + `
................
......tu..tt.tu.
......uuo.uuotuu
.tt..tt.o..uo...
.tuu.tu.o..oott.
....ouu.o..o.tuu
...tto..o.oo....
..ttuo.ttuottt..
..uu.ottuuotuu..
....tto.oo...u..
......ottu......
...ttuouuott....
...uuuoOo.tuu...
.......Oo.......
.......Oo.......
................
`, // ripe
fruitimageheader + ' hf:#802' + `
.........}F.....
.}F.}F...Ff.....
.Ff.Ff.....}F...
...}F......Ff...
...Ff.}F........
......Ff}F......
........Ff..}F..
............Ff..
..............}F
.........}F.}FFf
.}F......Ff.Ff..
.Ff.......}F....
....}F....Ff....
..}FFf..........
..Ff............
................
`);

var currant = createPlantImages(seeds_berry1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
.......Oo.......
.......Oo.......
.......Oo.......
.......Oo.......
................
`, // growing
subtleplantimageheader + `
................
................
................
................
..........OOO...
..hOO....O..hh..
..h..O..O.......
......OoO.......
..OOOOOOoOOOO...
.Oh....Oo....O..
.h.....Oo....h..
.......Oo.....h.
.......Oo.......
.......Oo.......
.......Oo.......
................
`, // grown
subtleplantimageheader + `
................
................
....L.......L...
...LLh......Lh..
...hhh....OOhhh.
...OO....Lhh....
.....OO.OLh.....
.....LLhOh......
..OOOLLhOOOOOO..
.OO..OhOO....O..
.LLh..OOLLh.LLh.
.LLh...OLLh.LLh.
..h....Ooh...h..
.......Oo.......
.......Oo.......
................
`, // ripe
fruitimageheader + `
................
................
................
...........+.+..
...........r+r..
.....r.r...+R+..
.....+R+...r+r..
.....r+r....r...
..+.+.r+..+.+...
..r+rr+r..r+r...
..+r+.r....R+...
..R+......r+....
..+r+.....+R+...
...+.......+....
................
................
`);

var goji = createPlantImages(seeds_berry0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
.........u......
......g.u.......
.......gu.......
.......ou.......
.......ox.......
.......ox.......
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
.........u......
......g.u.u.....
.....g.gx.u.....
.....g.ox.u.....
....g..ox.u.....
.....g.ox.......
.......ox.......
.......ox.......
.......ox.......
................
`, // grown
subtleplantimageheader + `
................
....hh....hhh...
...huu...huu....
......uuuu......
.....uuhuuu..hh.
....u.huu..u.hu.
..hu..huuu..uhu.
.huu..uoxu..u...
.huu..uox.u.u...
...u..uox.u..uh.
..|..u.hh.uh.uhu
hhu..u.hu.hu.uhu
huu..u.hu.hu.u..
..u..u.ox....u..
.....u.ox.......
................
`, // ripe
fruitimageheader + `
................
................
................
...........Pr...
.....Pr....Rr...
.....Rr....rp...
.....rp.........
................
Pr.........Pr...
Rr.........Rr...
rp.Pr......rp...
...Rr...Pr......
...rp...Rr......
........rp......
................
................
`);

var gooseberry = createPlantImages(seeds_berry1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
.......o........
.......o........
.....g.o........
......o.........
......o.........
......o.........
.....o..........
.....o..........
.....o..........
................
`, // growing
subtleplantimageheader + `
................
................
.........o......
........o.......
......g.o.......
.....gg.o.......
.......o........
.......o........
.......o........
......o.gg......
....g.o.g.......
...gg.o.........
.....o..........
.....o..........
.....o..........
................
`, // grown
subtleplantimageheader + `
................
................
.........o......
......g.o.gg....
.....gg.o.g.....
....ggg.o.......
.......o.gg.....
.....g.o.g......
....gg.o........
....g.o.ggg.....
...gg.o.gg......
..ggg.o.g.......
.....o..........
.....o..........
.....o..........
................
`, // ripe
fruitimageheader + `
................
................
.........LKL....
.........LKL....
.........LKL....
....LKL.........
....LKL.LKL.....
....LKL.LKL.....
........LKL.....
...LKL..........
...LKL..........
...LKL.LKL......
.......LKL......
.......LKL......
................
................
`);

var grape = createPlantImages(seeds_berry0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
....oo.oxoo.....
......oox.......
.......ox.......
.......ox.......
.......ox.......
.......ox.......
................
`, // growing
subtleplantimageheader + `
................
................
................
................
...........ooo..
.....oooxoo.....
..ooo..ox.......
.......ox.......
.......ox.......
....oo.oxoo.....
..oo..oox..ooo..
.......ox.......
.......ox.......
.......ox.......
.......ox.......
................
`, // grown
subtleplantimageheader + `
................
..........g.....
....g....gg.....
...gg...ggg.....
..ggg......ooo..
.....oooxoo...gg
..ooo..ox..g..g.
gg...ggox..gg...
.g...g.ox..ggg..
....oo.oxoo.....
..oo..oox..ooo..
gg.ggg.oxgg...gg
.g..gg.ox.g...g.
.....g.ox.......
.......ox.......
................
`, // ripe
fruitimageheader + `
................
................
................
................
................
................
.........FfFfFf.
.FfFfFf..f{f{f{.
.f{f{f{...FfFf..
..FfFf....f{f{..
..f{f{.....Ff...
...Ff......f{...
...f{...........
................
................
................
`);

var honeyberry = createPlantImages(seeds_berry1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
.......f........
.......f........
.....f.f.f......
.....f.f.f......
.....f.f.f......
.....f.f.f......
................
`, // growing
subtleplantimageheader + `
................
................
.......f..f.....
....f..f..f.....
....f..f..f.....
.....f.f..f.....
.....f.f..f.....
.....f.f..f.....
.....f.f..f.....
.....f.f.f......
.....f.f.f......
.....f.f.f......
.....f.f.f......
.....f.f.f......
.....f.f.f......
................
`, // grown
subtleplantimageheader + `
................
................
..hh...f..hhh...
..hhh..hh.fhh...
....f..hhhf.....
.....f.f..f.....
.....f.f..hhh...
..hhhf.hhhfhh...
..hh.f.fhhf.....
.....f.f.f......
...hhh.f.f......
...hhf.fhhh.....
.....f.f.hh.....
.....f.f.f......
.....f.f.f......
................
`, // ripe
fruitimageheader + `
................
................
................
...........@A...
...........Aa...
...@A......Aa...
...Aa...........
...Aa...@A......
........Aa......
........Aa.@A...
...........Aa...
.....@A....Aa...
.....Aa.........
.....Aa.........
................
................
`);

var juniper = createPlantImages(seeds_berry0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
......|.|.......
.......||||.....
........|.......
........|.......
........|.......
........|.......
........|.......
................
`, // growing
subtleplantimageheader + `
................
................
................
................
......z....z....
......z....z....
.......z..z.....
..zz...z.z......
....zz..z..zzz..
......zzzzz.....
........z.......
........z.......
........z.......
........z.......
........z.......
................
`, // grown
subtleplantimageheader + `
................
................
....h.h..h...h..
.....hhhh.h.h...
......o....o....
.h..h.o.hh.ohh..
..h.h.ho..o....h
..oo..ho.o.hh.h.
..h.oo..o..ooo..
.h..h.ooooo.h.h.
....h...oh.h.hh.
......hho.h.h...
........o.......
........o.......
........o.......
................
`, // ripe
fruitimageheader + `
................
..DB............
..Bb..DB....DB..
......Bb....Bb..
.........DB.....
..DB.....Bb.DB..
..Bb..DB....Bb..
......Bb...DB...
...DB......Bb...
...Bb.DB.DB...DB
......Bb.Bb...Bb
................
......DB........
......Bb........
................
................
`);

var lingonberry = createPlantImages(seeds_berry1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
.......T....T...
..T..UTT...TT...
..T...UT....T...
................
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
UTT....T....T...
.TTUT..TTt..TUt.
..Tt...Tt.UTTt..
..T..UTT...TT...
..T...UT....T...
................
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
U...T...........
UT.TtU...TU...T.
.UTt.UT.TtUT.Tt.
..T...TTt..TTt..
UTT....T....T...
.TTUT..TTT..TUT.
..TT...TT.UTTT..
..T..UTT...TT...
..T...UT....T...
................
................
`, // ripe
fruitimageheader + `
................
................
................
................
................
................
................
................
................
..P+..P+...P+...
P+++..++P+.++P+.
++.P+...++P+.++.
...++.....++....
................
................
................
`);



var raspberry = createPlantImages(seeds_berry0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
.HH.............
.hhH............
..hh.hHH........
....h|hH........
....|...........
....|...........
....|...........
...|............
................
................
`, // growing
subtleplantimageheader + `
................
................
.....hh..hh.....
.....Hhh.Hh.....
......Hh.Hh.....
........||......
.......|..hhh...
......|...HHh...
.....|..........
.....|..........
....|...........
....|...........
....|...........
...|............
................
................
`, // grown
subtleplantimageheader + `
................
................
..........HHHHH.
....HHH..HHHHhh.
..HHHHHH.Hhhhh..
..hhhhhhh|......
...hhhh|..HH....
......|..hHH....
.....|...hhHH...
.....|...hhHH...
....|.....hhH...
....|.....hh....
....|...........
...|............
................
................
`, // ripe
fruitimageheader + `
................
................
................
................
...........fF...
.....Ff....Ff...
.....fF.fF.fF...
..Ff.Ff.Ff......
..fF....fF......
..Ff.....Ff.....
......Ff.fF.....
......fF.Ff.Ff..
......Ff....fF..
............Ff..
................
................
`);

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

var clover = createPlantImages2(seeds_flower0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
.....h..........
....h|..........
.....hhh........
....h|h.........
.....h..........
................
................
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
....h...........
...hhh..........
....h|..........
.....hhhh.......
...hh|h||h......
...h|h.hh.......
....hh..........
................
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
................
...hh...........
...hhh..........
...h|h..........
....h|..........
.....hh.hhh.....
..hhh|h|||h.....
..h||h.hhhh.....
..hhhh..........
................
................
`, // ripe
subtleplantimageheader + `
................
......89.8......
......989.......
.....88h........
.......h........
........h.......
...hh...h.......
...hhh..h.......
...h|h.h........
....h|..........
.....hh.hhh.....
..hhh|h|||h.....
..h||h.hhhh.....
..hhhh..........
................
................
`);

var cornflower = createPlantImages2(seeds_flower1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
........q.......
.......qq.......
........qq......
........q.......
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
........q.......
.......qqq......
........q.......
........q.......
........q.q.....
.......qq.qq....
........qq......
........q.......
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
................
........A.......
.......vAv......
........v.......
........q.......
........q...q...
......q.q.q.qq..
.....qq.q.qq....
.......qq.qqq...
........qq......
........q.......
................
`, // ripe
subtleplantimageheader + `
........A.......
.......A@A......
.......A@A......
.....AA.v.AA....
....A@@vVv@@A...
.....AA.v.AA....
.......A@A......
.......A@A......
........A.......
........q...q...
......q.q.q.qq..
.....qq.q.qq....
.......qq.qqq...
........qq......
........q.......
................
`);

var daisy = createPlantImages2(seeds_flower0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
..........tt....
....tt.tt.tt....
....tt.tt..t....
....t...t..t....
....t...t..t....
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
................
........Z...Z...
........t...t...
...Z....t...t...
...t....t..t....
....t...t..t....
....t...t..t....
....t...t..t....
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
........9...9...
.......9]9.9]9..
...9....9...9...
..9]9...t...t...
...9....t...t...
...t....t...t...
...t....t..t....
....t...t..t....
....t...t..t....
....t...t..t....
................
`, // ripe
subtleplantimageheader + `
................
................
................
........9...9...
.......9Z9.9Z9..
...9..9Z]Z9Z]Z9.
..9Z9..9Z9.9Z9..
.9Z]Z9..9...9...
..9Z9...t...t...
...9....t...t...
...t....t...t...
...t....t..t....
....t...t..t....
....t...t..t....
....t...t..t....
................
`);

var dandelion = createPlantImages2(seeds_flower1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
........|.......
........|.......
........|.|.....
......|.||......
.......||.......
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
........||......
........||......
........|.......
........|.......
........|.......
........|.......
......|.|.|.....
......|.||......
.......||.......
................
`, // grown
subtleplantimageheader + `
................
................
................
................
........-.......
.......|-|......
.......|||......
........|.......
........|.......
.....|..|...|...
.....||.|..||...
.....||.|.||....
......||||||....
......|||||.....
.......|||......
................
`, // ripe
subtleplantimageheader + `
................
.......-Z-......
......Z-Z-Z.....
.....--XXX--....
......Z-Z-Z.....
.......-Z-......
........|.......
........|.......
........|.......
.....|..|...|...
.....||.|..||...
.....||.|.||....
......||||||....
......|||||.....
.......|||......
................
`);

var iris = createPlantImages2(seeds_flower1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
.......h........
.....h.h.|......
.....h.h|.......
......hh|.......
.......h........
`, // growing
subtleplantimageheader + `
................
................
................
................
................
.......h........
......hh|.......
......hh|.......
......hh|.......
.......h........
.......h........
.......h........
.....h.h.|......
.....h.h|.......
......hh|.......
.......h........
`, // grown
subtleplantimageheader + `
................
................
................
................
.......v........
......vvv.......
.....vhvvv......
.....vhvv.......
......hh|.......
.......h........
.......h........
.......h........
.....h.h.|......
.....h.h|.......
......hh|.......
.......h........
`, // ripe
subtleplantimageheader + `
................
.....i...i......
.....id.id......
.....iiidvvv....
...vvvidv---v...
..vv--vvvvvvv...
..vivvv-v..vv...
..i..v---i..v...
.....vvvvi......
......vvi.......
.......i........
.......h........
.....h.h.|......
.....h.h|.......
......hh|.......
.......h........
`);


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

var champignon = createPlantImages2(seeds_mushroom0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
................
......9]EE......
......9]EE......
................
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
......XOox......
......9]EE......
......9]EE......
......9]EE......
................
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
................
................
................
......Ooxx......
......XOox......
......XOox......
......9]EE......
......9]EE......
......9]EE......
................
................
`, // ripe
subtleplantimageheader + `
................
................
................
................
.....XOOoxx.....
....XXXOOoxx....
....XXXOOoxx....
....XXXOOoxx....
....XXXOOoxx....
......9]EE......
......9]EE......
......9]EE......
......9]EE......
......9]EE......
................
................
`);

var morel = createPlantImages2(seeds_mushroom1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
................
.......oO.......
.......9o.......
.......9O.......
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
.......oO.......
.......Oo.......
.......oO.......
.......9X.......
.......9X.......
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
................
................
................
.......Oo.......
.......XOo......
......oOo.......
.......oO.......
.......9X.......
.......9X.......
.......9X.......
................
`, // ripe
subtleplantimageheader + `
................
................
.......Oo.......
......XoXO......
......OXOo......
......oOoO......
......OXOX......
......oOoo......
......XoOX......
......oOXo......
.......oO.......
.......9X.......
.......9X.......
.......9X.......
.......9X.......
................
`);

var amanita = createPlantImages2(seeds_mushroom0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
......986.......
......986.......
......986.......
................
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
......P++.......
......+9r.......
......986.......
......986.......
......986.......
................
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
......P9+r......
.....P+++9r.....
.....P9+9+9.....
.....66666r.....
......986.......
......986.......
......986.......
......986.......
......986.......
................
................
`, // ripe
subtleplantimageheader + `
................
................
................
................
.....P9+9+......
....P++9+++.....
...P+9+++9+r....
...P9+9+9+9r....
...P+68686+r....
......984.......
.....98884......
......984.......
......984.......
......984.......
................
................
`);


var portobello = createPlantImages2(seeds_mushroom1,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
................
.....9]]EEE.....
.....9]]EEE.....
................
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
.....XOOoox.....
.....9]]EEE.....
.....9]]EEE.....
.....9]]EEE.....
................
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
................
................
................
.....XOOoox.....
.....XOOoox.....
.....XOOoox.....
.....9]]EEE.....
.....9]]EEE.....
.....9]]EEE.....
................
................
`, // ripe
subtleplantimageheader + `
................
................
................
................
..XXXOOOooooxx..
.XXXXOOOOooxoxx.
.XXXOOOOooooxxx.
.XXXXOOoOooooxx.
.XXXOXOOooooxxx.
.....9]]EEE.....
.....9]]EEE.....
.....9]]EEE.....
.....9]]EEE.....
.....9]]EEE.....
................
................
`);


var shiitake = createPlantImages2(seeds_mushroom0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
................
................
........o.......
...oo..OO...oo..
...OO..Ee...OO..
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
.........o......
........OOO.....
...oo...Ee......
..OOOO.EEe......
...Ee..Ee...OO..
...Ee..Ee...Ee..
................
`, // grown
subtleplantimageheader + `
................
................
................
................
................
................
.........oo.....
........OOOO....
...oo....Ee.....
..OOOO...Ee.....
...Ee...EEe.....
...Ee...Ee..oo..
...Ee..EEe.OOOO.
...Ee..Ee...Ee..
...Ee..Ee...Ee..
................
`, // ripe
subtleplantimageheader + `
................
................
................
.........oo.....
...oo...ooooo...
..oooo.OXOOXOO..
..OXOX...Ee.....
.OOOOOO..Ee.....
...Ee....Ee.....
...Ee....Ee.oo..
...Ee...EEeoooo.
...Ee...EeXOXOXO
...Ee..EEe..Ee..
...Ee..Ee...Ee..
...Ee..Ee...Ee..
................
`);



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////



var nettle = createPlantImages2(seeds_nettle,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
.......|........
.......|........
.....|.t.|......
....|||t|||.....
.....|.t.|......
.......t........
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
.......t........
.....|.t.|......
....|||t|||.....
.....|.t.|......
.......t........
.......t........
....|..t..|.....
...||||t||||....
....||.t.||.....
.......t........
................
`, // grown
subtleplantimageheader + `
................
................
.....h.t.h......
....h|||h||.....
.....|.|.|......
.......t........
....hh.t..hh....
...h|||thh|||...
.....|.t.||.....
.......t........
.......t........
...hh..t..hhh...
..h||||thh||||..
...|||.t.||||...
.......t........
................
`, // ripe
subtleplantimageheader + `
................
................
....hh.|.hh.....
...h||||h|||....
....||Z|Z||.....
.....Z.t.Z......
...hhh.t..hhh...
..h||||thh||||..
....||ZtZ|||....
.....Z.t.Z......
..hhh..t.hhhhh..
.h|||||th||||||.
..||||ZtZ.|||...
.....Z.t.Z......
.....Z.t.Z......
................
`);





var watercress = createPlantImages2(
subtleplantimageheader + `
................
................
................
................
................
..OOO..OOOO.....
.OOoo..Oooo.....
.Oooo..Xoo.OOO..
....X..X...OOoo.
....X..O..XXooo.
.....XOOOXX.....
.OOO.XOooX......
OOooXXX.XXOOOO..
Oooo......OOoo..
................
................
`,
subtleplantimageheader + `
................
................
................
................
................
..EEE..EEEE.....
.EEee..Eeee.....
.Eeee..]ee.EEE..
....]..]...EEee.
....]..E..]]eee.
.....]EEE]].....
.EEE.]Eee]......
EEee]]].]]EEEE..
Eeee......EEee..
................
................
`,
subtleplantimageheader + `
................
................
................
................
................
..YYY..YYYY.....
.YYyy..Yyyy.....
.Yyyy..Zyy.YYY..
....Z..Z...YYyy.
....Z..Y..ZZyyy.
.....ZYYYZZ.....
.YYY.ZYyyZ......
YYyyZZZ.ZZYYYY..
Yyyy......YYyy..
................
................
`,
subtleplantimageheader + `
................
................
................
................
................
..LLL..LLLL.....
.LLll..Llll.....
.Llll..Kll.LLL..
....K..K...LLll.
....K..L..KKlll.
.....KLLLKK.....
.LLL.KLllK......
LLllKKK.KKLLLL..
Llll......LLll..
................
................
`,
subtleplantimageheader + `
................
................
................
................
................
..HHH..HHHH.....
.HHhh..Hhhh.....
.Hhhh..#hh.HHH..
....#..#...HHhh.
....#..H..##hhh.
.....#HHH##.....
.HHH.#Hhh#......
HHhh###.##HHHH..
Hhhh......HHhh..
................
................
`);

var image_watercress_remainder = generateImageCanvas(`#aa:#fff6
................
................
................
................
................
..OOO..OOOO.....
.OOoo..Oooo.....
.Oooo..Xoo.OOO..
....X..X...OOoo.
....X..O..XXooo.
.....XOOOXX.....
.OOO.XOooX......
OOooXXX.XXOOOO..
Oooo......OOoo..
................
................
`);



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

var whitelotus = createPlantImages2(seeds_flower0,
subtleplantimageheader + `
................
................
................
................
................
................
................
........HH|.....
.....HhHhh|.....
....HhhHhh|.....
...HhhhHh||.....
...Hhh|H|.......
...Hhh|.........
....h|..........
................
................
`,
subtleplantimageheader + `
................
................
................
................
................
................
..........HH....
........HHhhh...
...HHHhhHhhhh|..
..Hhhh9hhhhhh|..
.Hhhhh99hhhh|...
.Hhhhh|Hhhh|....
.Hhhhh|.........
..hhh|..........
................
................
`,
subtleplantimageheader + `
................
................
................
................
................
......Z.........
.....9Z9..HH....
.....9Z9HHhhh...
...hh9Z9hhhhh|..
..Hhh9Z9hhhhh|..
.HhhhhZ7hhhh|...
.Hhhhhhhhhh|....
.Hhhhh|.........
..hhh|..........
................
................
`,
subtleplantimageheader + `
................
................
................
................
.......9........
......999..9....
...99.9Z9.97....
...999ZZZ987h...
...98998Z877h|..
..H987888877h|..
.Hhh9888877h|...
.Hhhh8888hh|....
.Hhhhhh.........
..hhhh..........
................
................
`);


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

// mistletoe

var mistletoe = createPlantImages2(seeds_mushroom0,
subtleplantimageheader + `
................
................
................
......ooo.......
...o.oo.ooxxxo..
..ooo...oxo..x..
..o.oooox.x..x..
.oo..o.x.x..x...
.o...ox..x..x...
.oo.oxoo.x.x....
...oox...xxx....
.....x..x.x.....
.....x...x......
.....xxxx.......
................
................
`,
subtleplantimageheader + `
................
.....oo.........
....o..oo.......
....o...ooxxxx..
....o....o...xx.
.....o.ooo....x.
..oo.ooo.o....x.
...ooo.ooo..xx..
..ooo...oo.x....
..o.o..xxo.x....
..oooo.x.xxxx...
...oo.....x.xx..
....o..xxxx..xx.
....ooo.....xx..
.......xxxxx....
................
`,
subtleplantimageheader + `
.......#........
.....oo#H.......
....o..HH....##.
....o...ooooo#H.
...#o....##..HH.
..#H.o.oo#H.##x.
..HH.ooo.xH.#Hx.
..#ooo.oxo..xx..
.#Hoo...xo.x.x..
.HH.o..xxo.x.x..
..ooo##x.oxxox..
.#Hoo#H...x#xx#.
.HH.oHHxxx#H.#H.
....ooo...HHxH..
.......xxxxx....
................
`,
subtleplantimageheader + `
.......#........
.....#o#H.##....
....#H.HH.#H.##.
....HH..ooHHo#H.
...#o....##..HH.
..#H.o##o#H.##x.
..HH.o#H.oH.#Hx.
..#ooo#oo#..ox..
.#Hoo...#HHx.x#.
.HH.o..#Ho.x.x#H
..ooo##HHooxoHHH
.#Hoo#H...x#xx#.
.HH.oHHxxx#H.#H.
....ooo##.HHxH..
.......#Hxxx....
.......HH.......
`);



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

var images_beehive = createPlantImages2(
// queen ready to build nest
subtleplantimageheader + `
................
................
................
................
................
................
................
....o0o.9797....
...o.oo77979....
......oXOXO.....
.....o.oo.......
....eeEEEee.....
....EEeeeEE.....
......EEEE......
................
................
`,
// queen building up honey cells
subtleplantimageheader + `
................
................
................
....o0o.9797....
...o.oo77979....
......oXOXO.....
.....o.oo.......
....EeEeEeE.....
....eEEEeEE.....
....eEEEeEE.....
...eEeEeEeE.....
...EEEeEEE......
...EEEeEE.......
....EeEe........
................
................
`,
// small beehive
subtleplantimageheader + `
................
................
................
.......Oox......
.......XOo......
......Oooxx.....
......XOOOo.....
.....OOooxxx....
.....XXOOOoo....
......Oooxx.....
......XOOOo.....
.......oox......
.......XOo......
................
................
................
`,
// growing bigger beehive
subtleplantimageheader + `
................
................
.......XOo......
......Oooox.....
......XOOOo.....
.....Oooooxx....
.....XOOOOOo....
....OOooooxxx...
....XXOOOOOoo...
.....Oooooxx....
.....XOOOOOo....
......oooox.....
......XOOOo.....
.......Oox......
................
................
`,
// full sized beehive
subtleplantimageheader + `
................
.......XOo......
......XXOoo.....
.....OOoooxx....
.....XXOOOoo....
....OOooooxxx...
....XXOOOOOoo...
...OOOooooxxxx..
...XXXOOOOOooo..
....OOooooxxx...
....XXOx0xOoo...
.....Oo000xx....
.....XXx0xoo....
......OOoxx.....
.......XOo......
................
`);


var images_queenbee = createPlantImages2(
// empty honey cells
subtleplantimageheader + `
................
................
................
........[[[.....
.......[EEE[....
....[[[EEEEE[...
...[EEE[EEE[....
..[EEEEE[[[.....
...[EEE[EEE[....
....[[[EEEEE[...
...[EEE[EEE[....
..[EEEEE[[[.....
...[EEE[........
....[[[.........
................
................
`,
// larva
subtleplantimageheader + `
................
................
................
........[[[.....
.......[EEE[....
....[[[EEEEE[...
...[EEE[EEE[....
..[EEEEE[[[.....
...[EEE[E90[....
....[[[E999E[...
...[EEE[E9E[....
..[EEEEE[[[.....
...[EEE[........
....[[[.........
................
................
`,
// covered up pupae
subtleplantimageheader + `
................
................
................
........[[[.....
.......[EEE[....
....[[[EEEEE[...
...[EEE[EEE[....
..[EEEEE[[[.....
...[EEE[998[....
....[[[99987[...
...[EEE[987[....
..[EEEEE[[[.....
...[EEE[........
....[[[.........
................
................
`,
// crawling out
subtleplantimageheader + `
................
................
.......o...o....
.......o[[[o....
.......oEEEo....
....[[[E0O0E[...
...[EEE[0O0[....
..[EEEEEOOO.....
...[EEE[8O8[....
....[[888X89[...
...[EE989O988...
..[EEE88[[[89...
...[EEE[........
....[[[.........
................
................
`,
// adult queen bee
subtleplantimageheader + `
................
................
................
................
................
................
..oo0oo..79797..
.o..0oo7777977..
....ooooXOX.....
.......OXOXO....
......ooooXOX...
.....o.ooOoOXO..
....o..o..o.....
.......o..o.....
................
................
`);


var images_workerbee = createPlantImages2(
// empty honey cells
subtleplantimageheader + `
................
................
................
................
.....zzz........
....zYYYz.......
...zYYYYYzzz....
....zYYYzYYYz...
.....zzzYYYYYz..
....zYYYzYYYz...
...zYYYYYzzz....
....zYYYz.......
.....zzz........
................
................
................
`,
// larva
subtleplantimageheader + `
................
................
................
................
.....zzz........
....zYYYz.......
...zYYYYYzzz....
....zYYYzYYYz...
.....zzzYYYYYz..
....zY90zYYYz...
...zY999Yzzz....
....zY9Yz.......
.....zzz........
................
................
................
`,
// covered up pupae
subtleplantimageheader + `
................
................
................
................
.....zzz........
....zYYYz.......
...zYYYYYzzz....
....zYYYzYYYz...
.....zzzYYYYYz..
....z998zYYYz...
...z99887zzz....
....z987z.......
.....zzz........
................
................
................
`,
// crawling out
subtleplantimageheader + `
................
................
................
....E...E.......
....EzzzE.......
....EYYYE.......
...zY0E0Yzzz....
....z0E0zYYYz...
.....EEEYYYYYz..
....z8E8zYYYz...
...z98]888zz....
...889E989......
...98zzz88......
................
................
................
`,
// adult worker bee
subtleplantimageheader + `
................
................
................
................
................
................
....797..ee0e...
...797777ee0.e..
.....]E]eeee....
....E]E]E.......
...]E]eeee......
...]EeEee.e.....
.....e..e.e.....
................
................
................
`);


var images_aster = createPlantImages2(seeds_flower0,
// sprout
subtleplantimageheader + `
................
................
................
................
................
................
................
................
................
................
.......h........
.......h........
.......h........
......Hh|.......
.......h........
................
`, // growing
subtleplantimageheader + `
................
................
................
................
................
.......h........
......Hh|.......
......Hh|.......
.......h........
.......h........
.......h........
.....H.h.|......
......Hh|.......
......Hh|.......
.......h........
................
`, // grown
subtleplantimageheader + `
................
................
.......W........
......VWV.......
.....hVWVh......
.....hVVVh......
.....hhVhh......
......hhh.......
.......h........
.......h........
.......h........
.....H.h.|......
......Hh|.......
......Hh|.......
.......h........
................
`, // ripe
subtleplantimageheader + `
................
................
.....WVWW.......
....VWWVWWVW....
...WWVWXWVW.....
...WVWX$$WVVW...
..WWWVW$WVWWV...
....VWWVWWV.....
....WW.WVV......
.......h........
.......h........
.....H.h.|......
......Hh|.......
......Hh|.......
.......h........
................
`);


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


var image_fern_as_crop = createPlantImages2(seeds_nettle,
'#hg:#08f4' + fern_base_image,
'#hg:#08f8' + fern_base_image,
'#hg:#08fc' + fern_base_image,
'#hg:#08ff' + fern_base_image);



////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////


var image_automaton = `
................
.....646535.....
.....646o3o.....
.....666ooo.....
.66666oo544oo64.
.644666o5o4o664.
.64.66oo544oo64.
.64.2626ooo4.64.
.62.2266o4o4.64.
.64266225444.64.
.62266265444.64.
....22625444....
...262665444....
....664..664....
....664..664....
....664..664....`;


var images_automaton = createPlantImages2(
  image_automaton,
  image_automaton,
  image_automaton,
  image_automaton,
  image_automaton
);
